package com.bcbim.operation_maintenance.space.mapper;

import com.bcbim.operation_maintenance_interface.space.dao.SpaceDAO;
import com.bcbim.operation_maintenance_interface.space.dao.SpaceRecordDAO;
import com.bcbim.operation_maintenance_interface.space.dto.SpaceColorTypeDTO;
import com.bcbim.operation_maintenance_interface.space.dto.SpaceDTO;
import com.bcbim.operation_maintenance_interface.space.dto.SpaceInfoDTO;
import com.bcbim.operation_maintenance_interface.space.dto.SpaceUnassignedDTO;
import com.bcbim.operation_maintenance_interface.space.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @version V 1.0.0
 * @Description：空间mapper
 * @Author: haomeijie
 * @Date: 2022/3/8 13:43
 **/
@Mapper
public interface SpaceMapper {
    /**
     * 空间列表
     *
     * @param spaceDTO
     * @return List<ListSpaceVO>
     * @Author: haomeijie
     * @Date: 2022/3/8 14:25
     */
    List<ListSpaceVO> listSpace(SpaceDTO spaceDTO);

    /**
     * 空间信息列表
     *
     * @param spaceInfoDTO
     * @return List<ListSpaceInfoVO>
     * @Author: haomeijie
     * @Date: 2022/3/9 19:48
     */
    List<ListSpaceInfoVO> listSpaceInfo(SpaceInfoDTO spaceInfoDTO);

    /**
     * 空间信息列表总数
     *
     * @param spaceInfoDTO
     * @return int
     * @Author: haomeijie
     * @Date: 2022/3/9 19:48
     */
    int listSpaceInfoCount(SpaceInfoDTO spaceInfoDTO);

    /**
     * 查看空间信息
     *
     * @param id
     * @return SpaceVO
     * @Author: haomeijie
     * @Date: 2022/3/9 19:04
     */
    SpaceVO getSpace(String id);

    /**
     * 编辑空间信息
     *
     * @param spaceDAO
     * @return int
     * @Author: haomeijie
     * @Date: 2022/3/9 19:01
     */
    int updateSpace(SpaceDAO spaceDAO);

    /**
     * 根据材质信息查询空间详情信息
     *
     * @param serverIds
     * @return List<ListSpaceAssignVO>
     * @Author: haomeijie
     * @Date: 2022/3/10 17:09
     */
    List<ListSpaceAssignVO> getSpaceByMaterial(@Param("serverIds") String[] serverIds);

    /**
     * 清空空间的类型类别指派
     *
     * @param spaceUnassignedDTO
     * @return
     * @Author: haomeijie
     * @Date: 2022/3/16 13:11
     */
    void updateSpaceType(SpaceUnassignedDTO spaceUnassignedDTO);

    /**
     * 清空空间的业务部，部门指派
     *
     * @param spaceUnassignedDTO
     * @return
     * @Author: haomeijie
     * @Date: 2022/3/16 13:50
     */
    void updateDepartment(SpaceUnassignedDTO spaceUnassignedDTO);

    /**
     * 根据选中空间统计空间面积
     *
     * @param serverIds
     * @return Double
     * @Author: haomeijie
     * @Date: 2022/3/19 10:08
     */
    Double getSpaceAreaSum(@Param("serverIds") String[] serverIds);

    /**
     * 根据颜色显示查询空间颜色
     *
     * @param spaceColorTypeDTO 码值
     * @return List<SpaceColorVO>
     * @Author: haomeijie
     * @Date: 2022/3/19 14:51
     */
    List<SpaceColorVO> selectSpaceByColor(SpaceColorTypeDTO spaceColorTypeDTO);

    /**
     * 批量插入空间信息
     *
     * @param list
     * @return int
     * @Author: haomeijie
     * @Date: 2022/3/21 16:47
     */
    int batchInsert(List<SpaceDAO> list);

    /**
     * 根据标签显示查询标签
     *
     * @param spaceColorTypeDTO
     * @return List<SpaceLabelVO>
     * @Author: haomeijie
     * @Date: 2022/3/22 9:58
     */
    List<SpaceLabelVO> selectSpaceByLabel(SpaceColorTypeDTO spaceColorTypeDTO);

    /**
     * 获取变更次数
     *
     * @param spaceId
     * @author xuehao
     * @createDate 2022/4/28 10:20
     * @retuen int
     */
    int getUpdateCount(String spaceId);

    /**
     * 新增变更记录
     *
     * @param spaceRecordDAO
     * @author xuehao
     * @createDate 2022/4/28 10:32
     * @retuen int
     */
    int insertSpaceRecord(SpaceRecordDAO spaceRecordDAO);

    /**
     * 编辑变更记录
     *
     * @param spaceRecordDAO
     * @author xuehao
     * @createDate 2022/4/28 10:36
     * @retuen int
     */
    int updateSpaceRecord(SpaceRecordDAO spaceRecordDAO);

    /**
     * 查询空间变更列表
     *
     * @param spaceId
     * @author xuehao
     * @createDate 2022/4/28 13:44
     * @retuen List<SpaceRecordListVO>
     */
    List<SpaceRecordListVO> listSpaceRecord(String spaceId);

    /**
     * 根据建筑id删除空间信息
     *
     * @param buildId
     * @return int
     * @Author: haomeijie
     * @Date: 2022/5/10 16:30
     */
    int deleteSpaceByBuildId(String buildId);

    /**
     * 根据模型文件id删除空间信息
     *
     * @param modelFileId
     * @return int
     * @Author: haomeijie
     * @Date: 2022/5/10 16:43
     */
    int deleteSpaceByModelFileId(String modelFileId);

    /**
     * 判断空间是否存在员工
     *
     * @param spaceIds
     * @return int
     * @Author: haomeijie
     * @Date: 2022/5/30 15:02
     */
    int checkSpaceExitStaff(String[] spaceIds);
}
